﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.ComponentModel;
using PhoneAppSTS.StsService;
using System.Diagnostics;
using STS.Model;

namespace PhoneAppSTS.Utils
{
    public class InformationUtils : INotifyPropertyChanged
    {
        private dane_pacjentow danePacjenta;
        public dane_pacjentow DanePacjenta
        {
            get
            {
                return danePacjenta;
            }
            set
            {
                danePacjenta = value;
                OnPropertyChanged("DanePacjenta");
            }
        }

        private Osrodek osrodek;
        public Osrodek Osrodek
        {
            get
            {
                return osrodek;
            }
            set
            {
                osrodek = value;
                OnPropertyChanged("Osrodek");
            }
        }

        private DaneLekarzy daneLekarzy;
        public DaneLekarzy DaneLekarzy
        {
            get
            {
                return daneLekarzy;
            }
            set
            {
                daneLekarzy = value;
                OnPropertyChanged("DaneLekarzy");
            }
        }

        public void DownloadDanePacjenta(int id_pacjenta)
        {
            Service1Client danePacjenta = new Service1Client();
            danePacjenta.GetDanePacjentaCompleted += new EventHandler<GetDanePacjentaCompletedEventArgs>(danePacjenta_GetDanePacjentaCompleted);
            danePacjenta.GetDanePacjentaAsync(id_pacjenta);
        }

        void danePacjenta_GetDanePacjentaCompleted(object sender, GetDanePacjentaCompletedEventArgs e)
        {
            try
            {
                DanePacjenta = e.Result;
                DanePacjentow dp = new DanePacjentow();
                dp.IdOsrodka = DanePacjenta.osrodek.id_osrodka;
                dp.IdLekarzaProwadzacego = DanePacjenta.dane_lekarzy.ID_Pracownika;
                dp.DataUrodzenia = (DateTime)DanePacjenta.data_urodzenia;
                dp.Pesel = DanePacjenta.pesel;
                dp.Imie = DanePacjenta.imie;
                dp.Nazwisko = DanePacjenta.nazwisko;
                Osrodek osr = new Osrodek();
                osr.IdOsrodka = DanePacjenta.osrodek.id_osrodka;
                osr.Nazwa = DanePacjenta.osrodek.nazwa;
                osr.Miasto = DanePacjenta.osrodek.miasto;
                osr.Telefon = DanePacjenta.osrodek.telefon;
                osr.Nr = DanePacjenta.osrodek.nr;
                osr.Email = DanePacjenta.osrodek.email;
                osr.X = (Double)DanePacjenta.osrodek.x;
                osr.Y = (Double)DanePacjenta.osrodek.y;
                Osrodek = osr;
                DaneLekarzy dl = new DaneLekarzy();
                dl.IdLekarza = DanePacjenta.dane_lekarzy.ID_Pracownika;
                dl.IdOsrodka = DanePacjenta.osrodek.id_osrodka;
                dl.Imie = DanePacjenta.dane_lekarzy.Imie;
                dl.Nazwisko = DanePacjenta.dane_lekarzy.Nazwisko;
                DaneLekarzy = dl;
                ModelInstance.DanePacjentowViewModel.AddDanePacjentow(dp, dl, osr);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }
        }

        private void OnPropertyChanged(string p)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(p));
            }
        }
        public event PropertyChangedEventHandler PropertyChanged;

        public void TakeInformation()
        {
            dane_pacjentow tmpDanePacjenta = new dane_pacjentow();
            DanePacjentow dp = ModelInstance.DanePacjentowViewModel.GetDanePacjentow();
            tmpDanePacjenta.imie = dp.Imie;
            tmpDanePacjenta.nazwisko = dp.Nazwisko;
            tmpDanePacjenta.pesel = dp.Pesel;
            tmpDanePacjenta.data_urodzenia = dp.DataUrodzenia;
            DanePacjenta = tmpDanePacjenta;
            Osrodek = ModelInstance.OsrodekViewModel.FindOsrodekByIdOsrodka(dp.IdOsrodka);
            DaneLekarzy = ModelInstance.DaneLekarzyViewModel.FindDaneLekarzyByIdDaneLekarzy(dp.IdLekarzaProwadzacego);
        }
    }
}
